一直以來都是用 bland.php 做使用者介面操作,今天要來正式做前端改用框架與後端橋接的流程,以下是相關的流程重點並記錄實作過程。
resources/js 目錄下建立 Vue 元件、Vue Router 設定檔和初始化 Vue 應用。@vite 指令引入建置後的 Vue 應用程式。npm run dev 啟動 Vite 開發伺服器。參考文章:魔法編譯器 - vite
使用 Vite 安裝 vue.js
npm install --save-dev vite @vitejs/plugin-vue
npm install vue@next vue-router@next
建立 Vite 設定檔 vite.config.js 在專案根目錄下:
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
export default defineConfig({
  plugins: [vue()],
  server: {
    proxy: {
      '/': 'http://localhost', // 用於代理 API 請求
    },
  },
});
resources/js 文件建立 Vue 元件
在 resources/js 目錄下建立 Vue 元件檔。
例如,建立 HelloWorld.vue、Home.vue 和 About.vue 檔案。
<template>
  <div>
    <h1>Hello, {{ name }}!</h1>
  </div>
</template>
<script setup>
import { defineProps } from 'vue';
const props = defineProps({
    name: {
      type: String,
      default: 'Vue'
    }
});
</script>
<style scoped>
h1 {
  color: #42b983;
}
</style>
配置 Vue Router
在 resources/js 目錄下建立 Vue Router 設定檔 resources/js/router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../components/Home.vue';
import About from '../components/About.vue';
const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
];
const router = createRouter({
  history: createWebHistory(),
  routes
});
export default router;
初始化 Vue 應用
在 resources/js 目錄下建立一個入口檔案 resources/js/app.js 初始化 Vue 應用:
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
const app = createApp(App);
app.use(router);
app.mount('#app');
建立主 Vue 元件
在 resources/js 目錄下建立一個主 Vue 元件檔 resources/js/App.vue:
<template>
  <router-view></router-view>
</template>
在 resources/views 目錄下建立一個 Blade 文件 resources/views/app.blade.php,用於掛載 Vue 應用
<!DOCTYPE html>
<html>
<head>
    <title>Laravel with Vue 3 and Vite</title>
    @vite('resources/js/app.js')
</head>
<body>
    <div id="app"></div>
</body>
</html>
在 routes/web.php 文件中加入一個路由來顯示 Blade 模板
Route::get('/', function () {
    return view('app');
});
執行 npm run dev 命令啟動 Vite 開發伺服器